package com.kevin.mapping.script.lexer;

import com.kevin.mapping.script.engine.JSONEnv;

import java.math.BigDecimal;

public class BoolValue extends Token {

    public static BoolValue TRUE = new BoolValue(Type.BOOLEAN, true);
    public static BoolValue FALSE = new BoolValue(Type.BOOLEAN, false);

    private boolean value;

    public BoolValue(int type, boolean value) {
        super(type);
        this.value = value;
    }

    public String toString() {
        return "value=" + value + " type=" + (char) type;
    }

    public Object getValue(JSONEnv env) {
        return value;
    }

    public void setValue(boolean value) {
        this.value = value;
    }


    @Override
    public Integer getIntValue(JSONEnv env) {
        if (value) {
            return 1;
        }
        return 0;
    }

    @Override
    public Long getLongValue(JSONEnv env) {
        if (value) {
            return 1l;
        }
        return 0l;
    }

    @Override
    public Double getDoubleValue(JSONEnv env) {
        if (value) {
            return 1d;
        }
        return 0d;
    }

    @Override
    public BigDecimal getBigDecimalValue(JSONEnv env) {
        if (value) {
            return new BigDecimal(1);
        }
        return new BigDecimal(1);
    }

    @Override
    public String getStrValue(JSONEnv env) {
        return String.valueOf(value);
    }

    @Override
    public Object getObjectValue(JSONEnv env) {
        return value;
    }

}
